/*****************************************************************************
 *   Copyright 2005 Tim A Wang
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *
 ****************************************************************************/
package com.jb.web.renderer;

import com.jb.web.application.HtmlConstants;
import com.jb.web.bean.TextArea;
import com.jb.web.context.WebContext;

import com.jb.faces.component.UIComponent;
import com.jb.faces.context.FacesContext;

public class RichTextRenderer extends FormItemRenderer {
    public String encode(FacesContext pCtx, String strValue) {
        return strValue;
    }

    public StringBuffer render(WebContext pCtx, UIComponent itemToRender) {
        TextArea hItem = (TextArea) itemToRender;
        pCtx.includeScript(HtmlConstants.RICH_EDITOR);

        if (!isVisible(pCtx, hItem)) {
            return new StringBuffer("");
        }

        if (hItem.isEnabled()) {
            return renderRich(pCtx, hItem);
        } else {
            return renderDisabled(pCtx, hItem, "" + hItem.getValue());
        }
    }

    public StringBuffer renderRich(WebContext pCtx, TextArea formField) {
        String clientId = formField.getFieldName(pCtx);
        StringBuffer html = new StringBuffer("<textarea ").append(getEditScript(pCtx, formField))
                                                          .append(addTagProperty("style", formField.getStyle(pCtx), null))
                                                          .append(addTagProperty("class", formField.getStyleClass(),
                    null)).append(addTagProperty("name", clientId, null)).append(" >");
        String value = this.encode(pCtx, formField.getValue());
        html.append((value == null) ? "" : value).append("</textarea>");
        html.append("<script >").append("addEditor('" + clientId + "');").append("</script>");

        return html;
    }

    private StringBuffer renderDisabled(WebContext pCtx, TextArea formField, String value) {
        return new StringBuffer("<DIV ").append(getEditScript(pCtx, formField))
                                        .append(addTagProperty("style", formField.getStyle(pCtx), null))
                                        .append(addTagProperty("class", formField.getStyleClass(), null)).append(">")
                                        .append(value).append("&nbsp;</DIV>");
    }
}
